//package com.gudaomai.ekproject.web;
//
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.crypto.password.PasswordEncoder;
//import org.springframework.stereotype.Controller;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.ModelAttribute;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.baomidou.mybatisplus.enums.SqlLike;
//import com.baomidou.mybatisplus.mapper.EntityWrapper;
//import com.baomidou.mybatisplus.toolkit.IdWorker;
//import com.gudaomai.ekproject.common.CommonConstant;
//import com.gudaomai.ekproject.common.Constant;
//import com.gudaomai.ekproject.entity.Permission;
//import com.gudaomai.ekproject.entity.RetEntity;
//import com.gudaomai.ekproject.entity.Role;
//import com.gudaomai.ekproject.entity.RoleInput;
//import com.gudaomai.ekproject.entity.RolesPermissions;
//import com.gudaomai.ekproject.entity.Sysuser;
//import com.gudaomai.ekproject.entity.SysuserInput;
//import com.gudaomai.ekproject.entity.UserRole;
//import com.gudaomai.ekproject.service.IPermissionService;
//import com.gudaomai.ekproject.service.IRoleService;
//import com.gudaomai.ekproject.service.IRolesPermissionsService;
//import com.gudaomai.ekproject.service.ISysuserService;
//import com.gudaomai.ekproject.service.IUserRoleService;
//
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//
//@RestController
//@RequestMapping("/ekproject/mytest")
//public class TestController extends BaseController {
//
//	@Autowired
//	ISysuserService sysuerServ;
//	@Autowired
//	IRolesPermissionsService rolesPersionsServ;
//	@Autowired
//	IPermissionService permissionServ;
//	@Autowired
//	IRoleService roleServ;
//	@Autowired
//	private PasswordEncoder passwordEncoder;
//	@Autowired
//	IUserRoleService userRoleServ;
//	@Autowired
//	IRolesPermissionsService iRolesPermissionsServ;
//	
//	@GetMapping("/test/getUserById/{id}")
//	@ApiOperation("通过用户ID获取用户")
//	public Sysuser getUserById(@ApiParam(value = "用户id", required = true) @PathVariable("id") String id) {
//
//		Sysuser sysuser = sysuerServ.selectById(id);
//
//		if (sysuser != null) {
//			return sysuser;
//		}
//
//		return null;
//	}// 测试成功
//
//	@GetMapping("/test/getUserByName/{name}")
//	@ApiOperation("通过用户姓名获取用户")
//	public Sysuser getUserByName(@ApiParam(value = "用户姓名", required = true) @PathVariable("name") String name) {
//		@SuppressWarnings("rawtypes")
//
//		EntityWrapper ew = new EntityWrapper();
//		ew.setEntity(new Sysuser());
//		ew.like("name", name, SqlLike.CUSTOM);
//		List<Sysuser> list = sysuerServ.selectList(ew);
//
//		System.out.println(list.size());
//
//		Sysuser sysuser = null;
//		if (list.size() > 0) {
//			sysuser = list.get(0);
//		}
//
//		return sysuser;
//	}// 测试成功
//
//	@SuppressWarnings("unchecked")
//	@GetMapping("/test/getPermissionsByRoleId/{id}")
//	@ApiOperation("根据角色id获取所有权限列表")
//	public List<Permission> getPermissionsByRoleId(
//			@ApiParam(value = "角色id", required = true) @PathVariable("id") String roleId) {
//
//		List<Permission> permissions = null;
//		if (null != roleId) {
//
//			@SuppressWarnings("rawtypes")
//			EntityWrapper ew = new EntityWrapper();
//			ew.setEntity(new RolesPermissions());
//			ew.like("role_id", roleId, SqlLike.CUSTOM);
//			List<RolesPermissions> rolesPermissions = rolesPersionsServ.selectList(ew);
//
//			System.out.println(rolesPermissions.size());
//
//			List<String> ids = new ArrayList<>();
//
//			for (RolesPermissions rolesPermission : rolesPermissions) {
//				ids.add(rolesPermission.getPermissionId());
//			}
//			permissions = permissionServ.selectBatchIds(ids);
//
//			System.out.println(permissions.size());
//
//			System.out.println(permissions.get(0));
//
//		}
//		return permissions;
//	}// method getPermissionByRoleId
//
//	@GetMapping("/test/addRole")
//	@ApiOperation("添加一个新的角色")
//	public RetEntity add(@ModelAttribute @Validated RoleInput role) {
//
//		RetEntity entity = new RetEntity();
//
//		//查询当前数据库是否存在该记录
//		@SuppressWarnings("rawtypes")
//		EntityWrapper ew = new EntityWrapper();
//		ew.setEntity(new Role());
//		ew.like("role_name", role.getRoleName(), SqlLike.CUSTOM);
//
//		List<Role> roles = roleServ.selectList(ew);
//
//		//判断查询结果
//		if (roles.size() > 0) {
//			//若查询记录结果数大于零，设置状态码为201
//			entity.setRetCode("201");
//			entity.setRetMessage("已经存在！");
//		} else {
//			//否则，插入该条记录，并设置状态码为200
//			role.setId(IdWorker.get32UUID());
//			roleServ.insert(role);
//			entity.setRetCode("200");
//		}
//
//		System.out.println("插入成功！");
//		
//		//返回状态信息
//		return entity;
//
//	}
//	
//	@GetMapping("/test/addSysUser")
//	@ApiOperation("添加一个新用户")
//	@SuppressWarnings("unchecked")
//	public RetEntity add(@ModelAttribute @Validated SysuserInput user) {
//
//		RetEntity entity = new RetEntity();
//
//		@SuppressWarnings("rawtypes")
//		EntityWrapper ew = new EntityWrapper();
//		ew.setEntity(new Sysuser());
//		ew.like("name", user.getName(), SqlLike.CUSTOM);
//		List<Sysuser> sysusers = sysuerServ.selectList(ew);
//
//		// 如果查询数据库发现已经存在，则拒绝执行if{}后的代码
//		if (sysusers.size() > 0) {
//			entity.setRetCode("201");
//			entity.setRetMessage("该用户已经存在");
//			return entity;
//		}
//
//		//查询数据库未存在，进行密码加密和缺省用户角色赋值
//		String password = user.getPassword();
//		// 采用SHA算法进行加密
//		// MessageDigest digest = MessageDigest.getInstance("SHA");
//		// digest.update(password.getBytes());
//		// String passwordEn//cty = digest.digest().toString();
//		String passwordEncty = passwordEncoder.encode(password);
//		user.setPassword(passwordEncty);
//		// 为用户添加用户id
//		user.setId(IdWorker.get32UUID());
//
//		// 给用户增加初始角色<--在user_role表中插入一条新记录
//		UserRole role = new UserRole();
//		// 设置user_role表的主键
//		role.setId(IdWorker.get32UUID());
//		// 该条记录存放用户id
//		role.setUid(user.getId());
//
//		// 该条记录存放角色id<--下面代码为查找或设置role_id
//		// 从role表中查找用户初始的身份值
//		@SuppressWarnings("rawtypes")
//		EntityWrapper eWrapper = new EntityWrapper();
//		eWrapper.setEntity(new Role());
//		eWrapper.like("role_name", Constant.TABLE_ROLE_ROLE_NAME_REGISTER_USER, SqlLike.CUSTOM);
//		List<Role> roles = roleServ.selectList(eWrapper);
//
//		// 判断查找到的记录
//		if (roles.size() > 0) {
//			// 若查询到，在user_role设置role_id
//			String roleId = roles.get(0).getId();
//			role.setRoleId(roleId);
//		} else {
//			// 假如初始数据库表role并没有该条记录，则对role表执行插入该条记录操作
//			Role roleTemp = new Role();
//			roleTemp.setId(IdWorker.get32UUID());
//			roleTemp.setRoleName(Constant.TABLE_ROLE_ROLE_NAME_REGISTER_USER);
//			roleServ.insert(roleTemp);
//			// 在role里插入该条记录后，设置user_role记录中的role_id为新记录的值
//			role.setRoleId(roleTemp.getId());
//		}
//
//		// 更新用户表和用户角色表
//		userRoleServ.insert(role);
//		sysuerServ.insert(user);
//
//		// 返回成功插入状态信息
//		entity.setRetCode("200");
//		entity.setRetMessage("用户信息添加成功");
//
//		
//		return entity;
//	}
//
//	
//	@GetMapping("/test/addRolesPermissions")
//	@ApiOperation("添加新的角色权限")
//	@SuppressWarnings("unchecked")
//	public void add(Role role, Permission perm) {
//		
//		//查找当前数据库是否存在该条记录
//		@SuppressWarnings("rawtypes")
//		EntityWrapper ew = new EntityWrapper();
//		ew.setEntity(new RolesPermissions());
//		ew.where("role_id={0}", role.getId()).and("permission_id={0}", perm.getId());
//
//		List<RolesPermissions> rolesPermissions = iRolesPermissionsServ.selectList(ew);
//
//		//存在，抛出异常，并退出程序执行
//		if (rolesPermissions.size() > 0) {
//			
//			try {
//				throw new Exception(role.getRoleName() + "<--->" + perm.getName() + "已经存在");
//			} catch (Exception e) {
//				e.printStackTrace();
//			}
//			return;
//		}
//		
//		//不存在，则执行插入操作
//		RolesPermissions rPermissions = new RolesPermissions();
//		
//		//使用IDworker获取32UUID
//		//源码：java.util.UUID.randomUUID().toString().replace("-","");
//		rPermissions.setRoleId(role.getId());
//		rPermissions.setPermissionId(perm.getId());
//		
//		//插入该条记录
//		iRolesPermissionsServ.insert(rPermissions);
//
//	}
//
//	
//
//}
